export interface ComponentInfo {
  name: string;
  category: 'basic' | 'layout' | 'navigation' | 'data-entry' | 'data-display' | 'feedback' | 'other' | 'pro' | 'charts';
  description: string;
  props: ComponentProp[];
  examples: ComponentExample[];
  imports: string[];
  dependencies?: string[];
  version?: string;
}

export interface ComponentProp {
  name: string;
  type: string;
  required: boolean;
  description: string;
  defaultValue?: any;
  options?: string[];
}

export interface ComponentExample {
  title: string;
  description: string;
  code: string;
  preview?: string;
}

export interface TemplateInfo {
  name: string;
  category: string;
  description: string;
  framework: 'react' | 'vue' | 'angular' | 'umi' | 'umi-max';
  template: string;
  dependencies: string[];
  props: ComponentProp[];
}

export interface MCPResource {
  uri: string;
  name: string;
  description: string;
  mimeType: string;
}

export interface MCPTool {
  name: string;
  description: string;
  inputSchema: any;
}

export interface GenerateCodeParams {
  component: string;
  props?: Record<string, any>;
  template?: string;
  framework?: 'react' | 'vue' | 'angular' | 'umi' | 'umi-max';
  includeImports?: boolean;
  includeStyles?: boolean;
}

export interface SearchComponentsParams {
  query: string;
  category?: string;
  limit?: number;
}

export interface GetDocumentationParams {
  component: string;
  version?: string;
  language?: 'zh' | 'en';
}